import "./plugin/axios";
import "./public-path";
import "./assets/style/rest.css";
import "./assets/style/common.less";
import Vue from "vue";
import App from "./App.vue";
import VueRouter from "vue-router";
import { routes } from "./router";
import tslI18n from "tsl-locale";
import store from "./store";
import lottie from "vue-lottie";

if (process.env.VUE_APP_MOCK) {
  const { mockXHR } = require("../mock");
  mockXHR();
}

Vue.config.productionTip = false;
Vue.use(VueRouter);
Vue.component("lottie", lottie);
let instance = null;

function render(props = {}) {
  const { container } = props;
  instance = new Vue({
    render: (h) => h(App),
    i18n: tslI18n("zh"),
    store,
    router: new VueRouter({
      routes,
      mode: "history",
      base: window["__POWERED_BY_QIANKUN__"] ? `/${process.env.VUE_APP_NAME}` : "/"
    })
  }).$mount(container ? container.querySelector("#app") : "#app");
}

// 独立运行时
if (!window.__POWERED_BY_QIANKUN__) {
  render();
}

export async function bootstrap() {
  console.log("[vue] vue app bootstraped");
}

export async function mount(props) {
  console.log("[vue] props from main framework", props);
  render(props);
}

export async function unmount() {
  instance.$destroy();
  instance.$el.innerHTML = "";
  instance = null;
}
